package org.example.managere.service.feibiao;

import org.example.managere.dto.feibiao.AmArchivesFailureDto;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Optional;

/**
 * 电机故障记录服务接口
 */
public interface AmArchivesFailureService {
    
    /**
     * 保存电机故障记录
     * @param amArchivesFailureDto 电机故障记录DTO
     * @return 保存后的电机故障记录DTO
     */
    AmArchivesFailureDto save(AmArchivesFailureDto amArchivesFailureDto);
    
    /**
     * 根据ID查找电机故障记录
     * @param failureId 故障记录ID
     * @return 可能包含电机故障记录的Optional
     */
    Optional<AmArchivesFailureDto> findById(Integer failureId);
    
    /**
     * 更新电机故障记录
     * @param amArchivesFailureDto 电机故障记录DTO
     * @return 更新后的电机故障记录DTO
     */
    AmArchivesFailureDto update(AmArchivesFailureDto amArchivesFailureDto);
    
    /**
     * 删除电机故障记录
     * @param failureId 故障记录ID
     */
    void deleteById(Integer failureId);
    
    /**
     * 查找所有电机故障记录
     * @return 电机故障记录DTO列表
     */
    List<AmArchivesFailureDto> findAll();
    
    /**
     * 分页查询电机故障记录
     * @param pageable 分页参数
     * @return 电机故障记录DTO分页结果
     */
    Page<AmArchivesFailureDto> findAll(Pageable pageable);
    
    /**
     * 根据电机ID查询故障记录
     * @param motorId 电机ID
     * @return 电机故障记录DTO列表
     */
    List<AmArchivesFailureDto> findByMotorId(String motorId);
    
    /**
     * 根据故障类型查询故障记录
     * @param failureType 故障类型
     * @return 电机故障记录DTO列表
     */
    List<AmArchivesFailureDto> findByFailureType(String failureType);
    
    /**
     * 根据是否修复状态查询故障记录
     * @param repaired 是否已修复
     * @return 电机故障记录DTO列表
     */
    List<AmArchivesFailureDto> findByRepaired(Boolean repaired);
} 